// const = require("")
const { pathToRegexp} = require("path-to-regexp");
// 有一些接口是不需要token 就能访问的
// 不需要请求的接口列表
// 导入解密方法
const {decrypto} = require("./crypto.js")
// 配置的是不需要
// 应该配置需要做token验证的api
const atrzList = [
    {method:'POST',path:'/login'},
    {method:'OPTIONS',path:'/login'},
    {method:'OPTIONS',path:'/login/:id'},
    {method:'GET',path:'/login/:id'},
    {method:'GET',path:'/api/student/jsonpData/:id'}

]
module.exports = function (req,res,next){
    // console.log('要验证的cookie',req.cookies)
    // console.log('要验证的请求头',req.headers.authorization)
    // 请求的地址
    // console.log('请求方法===',req.method)
    // console.log('请求路径1===',req.path)
    // console.log('请求路径2===',req.path)
    // 遍历atrzList 判断是否需要拿到token
    console.log("这是token-->",req.cookies.token)
    const targetList = atrzList.filter((item)=>{
        const pathExp = pathToRegexp(item.path)
        return (req.method === item.method) && (pathExp.test(req.path))

    })
    if(targetList.length>0){
        // 匹配到了 当前的api不需要进行token提交
        console.log("!!!当前无需token提交!!!!")
        next();
        return 

    }
    // console.log("当前请求需要token")
    // 使用cookieParser的内置加密方法
    // console.log("获取加密cookie?",req.signedCookies['token'])
    // console.log('=====================')
    let  token 
    token= req.cookies.token;
    if(!token){
        // 这里没有拿到token 尝试请求头中有没有
        token = req.headers.authorization
    }
    // 到这里还是没有
    if(!token){
        // 抛出
        console.log("没有token")
        throw "no token";
    }
    // 到这里的就是有token的
    // console.log("拿到了请求头",token,'可以进行下一步')
    const originToken = decrypto(token)
    // 验证token等
    // console.log(originToken)
    // console.log('=======')
    next();

    
   
    
    
}